package com.qf.pojo;

import lombok.Data;

/**
 * 封装向前端返回数据的统一格式
 *
 *    将这种数据返回给前端后，前端不知道这些数据代表什么含义，怎么办？？？
 *      接口文档：（后端开发人员需要向前端人员提供的）
 *          接口 URL
 *          接口参数 （公共、接口私有）
 *          结果说明 （有哪些字段，每个字段代表什么含义，code-不同code的含义是什么）
 *          结果示例
 *              成功：
 *              {
 *                  data:{
 *                      uname:
 *                      age:
 *                      pwd:
 *                      bir:
 *                  },
 *                  msg:"",
 *                  code:1000
 *              }
 *              失败：
 *              {
 *                  data:null,
 *                  msg:"没有登陆",
 *                  code:1001
 *              }
 *
 */
@Data //覆盖上次提交信息
public class R {
    /**
     * 成功的数据
     */
    private Object data;

    /**
     * 提示信息 （成功，失败）
     */
    private String msg;

    /**
     * 成功或者失败的标记 （true/false）
     */
    private boolean flag;

    /**
     * 操作的结果码 (1000-成功 ， 2001-没登陆，2002-没权限，5000-系统异常，....)
     */
    private int code;

    /**
     * 操作成功，携带具体操作数据
     * @param data
     * @return
     */
    public static R success(Object data){
        R r = new R();
        r.setCode(ResultEnum.SUCCESS.getCode());
        r.setData(data);
        return r;
    }

    /**
     * 操作成功，携带成功的结果提示
     * @param msg
     * @return
     */
    public static R success(String msg){
        R r = new R();
        r.setCode(ResultEnum.SUCCESS.getCode());
        r.setMsg(msg);
        return r;
    }

    /**
     * 操作失败
     * @param msg
     * @return
     */
    public static R error(String msg){
        R r = new R();
        r.setCode(ResultEnum.FAIL.getCode());
        r.setMsg(msg);
        return r;
    }

    /**
     * 操作失败
     * @param resultEnum
     * @return
     */
    public static R error(ResultEnum resultEnum){
        R r = new R();
        r.setCode(resultEnum.getCode());
        r.setMsg(resultEnum.getMsg());
        return r;
    }

}
